# Options Dealer Positioning — Overview > Personal SpotGamma/QuantVue-style options-positioning pipeline. Pulls institutional-grade options chain data (CME + OPRA via DataBento, ETF chains + spot via Schwab), computes per-strike dealer-positioning metrics (GEX, walls, gamma flip, vanna, charm, max pain, L1-L4), renders a multi-symbol multi-DTE web dashboard, and tracks SpotGamma's own published levels daily for empirical comparison. ## Why this exists Tradeable dealer-positioning signals — call walls, put walls, gamma flip, max pain — are usually paywalled (SpotGamma $99–$299/mo, Polygon $199/mo, QuantVue more for live). With my own DataBento + Schwab subscriptions I already pay for the underlying data. This project turns that into the same dashboards retail vendors charge for, plus a daily comparison framework against SpotGamma's published levels. ## Status (2026-05-26 EOD) **Live, working, daily reproducible.** Multiple iterations of fixes applied through the day; current build at `dashboard_visual_20260526_142345.html`. ### Coverage (9 symbols) | Symbol | Source | Cost | |---|---|---| | **ES** | DataBento CME `ES.OPT` + 9 weekly parents (`E1A-E1D`, `EW1-EW4`, `EW.OPT`) | $0 | | **NQ** | DataBento CME `NQ.OPT` + 8 weekly parents | $0 | | **GC** | DataBento CME `OG.OPT` (gold smart symbol) | $0 | | **RUT** | DataBento OPRA `RUT.OPT` + `RUTW.OPT` (cash index, direct match to SG) | ~$7/mo | | **SPX** | DataBento OPRA `SPX.OPT` + `SPXW.OPT` | ~$7/mo | | **NDX** | DataBento OPRA `NDX.OPT` + `NDXP.OPT` | ~$7/mo | | **IWM** | Schwab REST `/chains` (Russell ETF — kept in parallel to validate RUT/IWM scale factor) | $0 | | **SPY** | Schwab REST `/chains` (S&P 500 ETF) | $0 | | **QQQ** | Schwab REST `/chains` (Nasdaq ETF) | $0 | **All spot prices** come from Schwab `/marketdata/v1/quotes` (free). **Monthly cost:** ~$22 in DataBento OPRA usage; CME free in subscription tier; Schwab free. (Was briefly down to $7 when only SPX OPRA was enabled; bumped to $22 when user accepted RUT+NDX cost for direct SpotGamma comparison.) ### Major features as of EOD 2026-05-26 - **SpotGamma indicator-string parser** (`sg_levels.py`) — 14-field positional decode of their daily morning string - **3 view modes** in dashboard: **Ours** (default), **SG** (SpotGamma's published levels), **Compare** (side-by-side with delta) - **Daily SG-vs-ours tracking** persisted to `reports/level_tracking.jsonl` for empirical scoring - **L1-L4 metric** by OI ranking (reverse-engineered to match SG's L-level methodology for ETFs) - **Abs Gamma Strike** (gamma-weighted magnet level, complement to L1) - **Hover tooltips** (ⓘ icons) on every metric — ELI5 explanations inline - **1% wall proximity badge** — fires when spot enters the SpotGamma 1% rule zone - **Implied 1-day range card** (ATM IV × spot × √(1/252) — 78% of sessions close inside) - **4-up bar charts** per strike: Net Delta, Net Gamma, Net Vanna, Net Charm - **Per-expiration max pain** + γ% contribution (anticipates gamma-decay regime shifts) - **Zero-GEX zones** secondary level list - **Auto-archive** of older dashboard HTML files into `reports/archive/` ## Chapters 1. [[01 - Architecture & Data Sources]] — how Schwab, DataBento, WSL, and OneDrive fit together 2. [[02 - Concepts (ELI5)]] — what gamma / GEX / walls / max pain actually mean 3. [[03 - Math & Sign Conventions]] — formulas, multipliers, sign conventions, IV recovery 4. [[04 - Symbology & Gotchas]] — `OG.OPT`, weekly parents, RTY-not-in-CME, RUTW/SPXW/NDXP weeklies, etc. 5. [[05 - Dashboards & Run Guide]] — `dashboard_visual.py` workflow + view tabs + SG daily input 6. [[06 - Cost & Budget]] — DataBento usage-based vs flat-rate alternatives 7. [[07 - Future Work]] — intraday-OI corrected GEX, C-level math, settlement-spot replay 8. [[08 - SpotGamma Playlist Findings]] — full SpotGamma methodology survey from 99-video learning series 9. [[09 - SpotGamma Tracking & Reverse Engineering]] — daily comparison framework + L/C level math reverse-engineering status 10. [[10 - AWS S3 Hosting Setup]] — step-by-step one-time AWS account setup for auto-publishing the dashboard to a shareable URL (manual, you do everything in console) 11. [[11 - AWS S3 Setup via Claude (delegated)]] — alternative path where you create a temp admin IAM user, Claude runs the AWS CLI setup commands, then you delete the temp user (~5 min total) ## Related notes - [[Schwab Options Data API]] — original 2026-05-11 plan note (now superseded; Schwab plays the spot+ETF-chain role only) - [[ATS 2.0 Trading System]] — QuantVue's commercial system this approximates ## Code - Live: `/home/dlitt/projects-personal/schwab-options/` (WSL ext4, fast) - Backup: `/mnt/c/Users/dlitt/OneDrive/claude/projects-personal/schwab-options/` (OneDrive periodic copy) - Venv: `~/.venvs/schwab-options/` (Python 3.12, httpx + databento) - Credentials (NEVER in code, NEVER on OneDrive): - `~/.schwab/credentials.json` — Schwab client_id + secret + tokens - `~/.databento/credentials.json` — DataBento api_key - Daily SG input: `~/.schwab/sg-levels-YYYY-MM-DD.txt` — paste SG's "Copy All" string each morning